package text_2023_09_20;

import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

/**
 * @author Vv
 * @version 1.0
 * @project coding_learn
 * @description
 * @date 2023/9/20 17:34:49
 */
public class MyQueue<T>{
       public List<T> queue;
       public int size;
       public MyQueue(){
           this.queue = new LinkedList<>();
           size = 0;
       }
       public void put(T cur){
           if(cur == null){
               return;
           }
           queue.add(cur);
           this.size++;
       }
       public T get(){
           if(isEmpty()){
               return null;
           }
           T tem = queue.remove(0);
           this.size--;
           return tem;
       }
       public T peek(){
           if(isEmpty()){
               return null;
           }
           T ans = queue.get(0);
           return ans;
       }

       public boolean isEmpty(){
           return this.size == 0;
       }
       public int size(){
           return this.size;
       }

    public static void main(String[] args) {
        int testTime = 10000000;
        MyQueue<Integer> myQueue = new MyQueue<>();
        Queue<Integer> queue = new LinkedList<>();
        for(int i = 0;i<testTime;i++){
            double tem = Math.random();
            if(tem < 0.33){
                int t = (int)(Math.random() * (500));
                myQueue.put(t);
                queue.add(t);
            }else if(tem<0.66){
                //如果有一个为空 一个不为空 队列不相等
                if(myQueue.isEmpty() ^ queue.isEmpty()){
                    System.out.println("w");
                    break;
                }else if((!myQueue.isEmpty() && !queue.isEmpty()) && (myQueue.peek().intValue() != queue.peek().intValue())){
                        System.out.println("wrong");

                }
            }else{
                //如果有一个为空 一个不为空 队列不相等
                if(myQueue.isEmpty() ^ queue.isEmpty()){
                    System.out.println("wrong");
                    // 在两个都为不空的情况下 出队列的值不同
                }else if((!myQueue.isEmpty() && !queue.isEmpty()) && !myQueue.get().equals(queue.poll())){
                    System.out.println("wrong");
                }


            }
        }
        // 判断队列中剩余的值 是否顺序相同 ：
        //先判断队列中值的数量 是否相同
        if(myQueue.isEmpty() ^ queue.isEmpty() || (myQueue.size() != queue.size())){
            System.out.println("wrong");
        }
        // 两个队列不断吧其中的值一个一个拿出来对比 出现不一样的就是错的
        while(!myQueue.isEmpty()){
            if(!myQueue.get().equals(queue.poll())){
                System.out.println("wrong");
            }
        }
        System.out.println("right");

    }
}
